﻿
#region 作者和版权
/*************************************************************************************
* CLR 版本: 4.0.30319.42000
* 类 名 称: UserTokenPool
* 机器名称: SUNTIA-QL
* 命名空间: ServerFramework.Net.Tcp
* 文 件 名: UserTokenPool
* 创建时间: 2015/9/23 10:51:52
* 作 者: 乔龙 Qiaolong
* 版 权: UserTokenPool说明：本代码版权归乔龙所有，使用时必须带上乔龙网站地址 All Rights Reserved (C) 2015 - 2013
* 签 名: To be or not, it is not a problem !
* 网 站: http://www.suntia.net
* 邮 箱: qiaolong306@qq.com 
* 唯一标识： e2222ea6-fd59-4e78-9a07-4b30f61014da 
*
* 登录用户: simida
* 所 属 域: SUNTIA-QL

* 创建年份: 2015
* 修改时间:
* 修 改 人:
* 
************************************************************************************/
#endregion

using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;


namespace ServerFramework.Net.Tcp
{
    /// <summary>
    /// usertoken 池
    /// </summary>
    public class UserTokenPool
    {
        private Stack<UserToken> _pool;
        private readonly object _lock = new object();

        public UserTokenPool(int max)
        {
            _pool = new Stack<UserToken>(max);
        }
        /// <summary>
        /// 取出一个连接对象 --创建连接
        /// </summary>
        public UserToken pop()
        {
            lock (_lock)
            {
                return _pool.Pop();
            }
        }
        //插入一个连接对象---释放连接
        public void push(UserToken token)
        {

            if (token != null)
            {
                lock (_lock)
                {
                    _pool.Push(token);
                }
            }
        }
        public int Size
        {
            get 
            {
                lock (_lock)
                {
                    return _pool.Count;
                }
            }
        }
    }
}


